/**
 *
 */
package com.ce.pms.house.dao;

import java.math.BigInteger;
import java.util.List;
import java.util.Map;

import com.ce.pms.base.dao.IPmsBaseDao;
import com.ce.pms.house.model.MeterDomain;
import com.ce.pms.house.model.MeterType;
import com.sitechasia.webx.core.support.Page;

/**
 * 功能描述: IMeterDao
 * <p>版权所有：中企动力
 * <p>未经本公司许可，不得以任何方式复制或使用本程序任何部分
 *
 * @author  付湘辉
 * Created on：  2008-7-8
 * @author  付湘辉
 * update on：  2008-7-8
 */

public interface IMeterDao extends IPmsBaseDao<MeterDomain> {
	/**
	 *
	 * 功能描述: 通过房间查询有效的走表实体List
	 *
	 * @author 胡煦 Created on:2008-8-8
	 *
	 * 修改原因：
	 * @param houseId
	 * @return List<MeterDomain> 返回结果
	 */
	public List<MeterDomain> getMeterListByhouseId(Long houseId);
	/**
	 *
	 * 功能描述: 通过楼栋id和走表类型code查询走表实体List
	 *
	 * @author 胡煦
	 * Created on:2008-8-8
	 *
	 * 修改原因：
	 * @param buildingId
	 * @param meterTypeCode
	 * @return Map 返回结果
	 */
	public Map getMeterByBuildingId(Long buildingId,String meterTypeCode);
	/**
	 * 方法描述:获取某个楼栋下所有某类有效走表的底数
	 * @author 胡煦
	 * Create on:2008-12-7
	 * @param buildingId,meterTypeCode
	 * @return List<Object[]>
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public List<Object[]> getMeterBaseByBuildingId(Long buildingId,String meterTypeCode);
	/**
	 *
	 * 功能描述: 通过走表类型name查询走表类型实体
	 *
	 * @author 胡煦
	 * Created on:2008-8-8
	 *
	 * 修改原因：
	 * @param meterTypeName
	 * @return MeterType 返回结果
	 */
	public MeterType getMeterTypeByName(String meterTypeName);
	/**
	 *
	 * 功能描述: 通过房屋id和走表类型code查询走表实体
	 *
	 * @author 胡煦
	 * Created on:2008-8-8
	 *
	 * 修改原因：
	 * @param houseId
	 * @param meterType
	 * @return MeterDomain 返回结果
	 */
	public MeterDomain getMeterByHouseId(Long houseId,String meterType);
	/**
	 * 方法描述: 根据走表类型ID查询走表归零值
	 * @author 胡煦
	 * Create on:2008-8-18
	 * @param meterTypeId
	 * @return BigInteger
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public BigInteger getMAXZByMeterTypeCode(String meterTypeCode);
	/**
	 *
	 * 功能描述: 通过走表类型code查询走表类型实体
	 *
	 * @author 胡煦
	 * Created on:2008-8-8
	 *
	 * 修改原因：
	 * @param meterTypeCode
	 * @return MeterType 返回结果
	 */
	public MeterType getMeterTypeByCode(String meterTypeCode);
	/**
	 *
	 * 功能描述: 通过房号id查询走表实体List
	 *
	 * @author 胡煦
	 * Created on:2008-7-14
	 *
	 * 修改原因：
	 * @param houseId
	 * @return MeterDomain 返回结果
	 */

	public List<MeterDomain> getMeterListByHouseId(Long houseId);
	/**
	 * 方法描述: 根据房屋id分页查询其下所有走表资料
	 * @author 胡煦
	 * Create on:2008-7-3
	 * @param qc
	 * @param pageNo
	 * @param pageSize
	 * @return page
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	 public Page queryPageMeterByHouseId(Long houseId, int pageNo, int pageSize);

	   /**
	    * @param meterDomain
	    * @roseuid 485A280B03D8
	    */
	   public void updateMeterDosage(MeterDomain meterDomain);

	   /**
	    * @param meterDomain
	    * @roseuid 485A282B0157
	    */
	   public void updateMeter(MeterDomain meterDomain);

	   /**
	    *
	    * 功能描述: 添加走表
	    *
	    * @author 付湘辉
	    * Created on:2008-7-8
	    *
	    * 修改原因：
	    * @param meterDomain
	    * @return MeterDomain 返回结果
	    * @roseuid 485A28CD0109
	    */
	   public MeterDomain addMeter(MeterDomain meterDomain);

	   /**
		 *
		 * 功能描述: 通过走表类型id查询走表类型实体
		 *
		 * @author 付湘辉
		 * Created on:2008-7-8
		 *
		 * 修改原因：
		 * @param meterTypeId
		 * @return MeterType 返回结果
		 */
		public MeterType getMeterTypeById(Long meterTypeId);

	   /**
		 *
		 * 功能描述: 查询走表类型列表
		 *
		 * @author 付湘辉
		 * Created on:2008-7-8
		 *
		 * 修改原因：
		 * @return List<MeterType> 返回结果
		 */
		public List<MeterType> getMeterTypeList();


	/**
	 *
	 * 功能描述: 通过房屋id和走表类型id查询走表实体
	 *
	 * @author 付湘辉
	 * Created on:2008-7-8
	 *
	 * 修改原因：
	 * @param houseId
	 * @param meterTypeId
	 * @return MeterDomain 返回结果
	 */
	public MeterDomain getMeterByHouseId(Long houseId,Long meterTypeId);

	/**
	 * 功能描述: 得到指定房屋和走表类型的走表数量 <br>
	 * @param houseId
	 * @param meterType
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-7-22  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public Long getMeterCountBy(Long houseId,Long meterType);

	/**
	 * 功能描述: 执行一个批量增加走表的原始SQL语句 <br>
	 * @param paramList
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-7-23  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public Boolean addMeterBatch(List<Object[]> paramList);
}
